/*
   Copyright 2015 Kai Huebl (kai@huebl-sgh.de)

   Lizenziert gemäß Apache Licence Version 2.0 (die „Lizenz“); Nutzung dieser
   Datei nur in Übereinstimmung mit der Lizenz erlaubt.
   Eine Kopie der Lizenz erhalten Sie auf http://www.apache.org/licenses/LICENSE-2.0.

   Sofern nicht gemäß geltendem Recht vorgeschrieben oder schriftlich vereinbart,
   erfolgt die Bereitstellung der im Rahmen der Lizenz verbreiteten Software OHNE
   GEWÄHR ODER VORBEHALTE – ganz gleich, ob ausdrücklich oder stillschweigend.

   Informationen über die jeweiligen Bedingungen für Genehmigungen und Einschränkungen
   im Rahmen der Lizenz finden Sie in der Lizenz.

   Autor: Kai Huebl (kai@huebl-sgh.de)
 */

#ifndef __OpcUaStackCore_AggregateFilterConfiguration_h__
#define __OpcUaStackCore_AggregateFilterConfiguration_h__

#include <stdint.h>
#include "OpcUaStackCore/Base/ObjectPool.h"
#include "OpcUaStackCore/Base/os.h"
#include "OpcUaStackCore/BuildInTypes/BuildInTypes.h"

namespace OpcUaStackCore
{

	class DLLEXPORT AggregateConfiguration
	: public  Object
	{
	  public:
		typedef boost::shared_ptr<AggregateConfiguration> SPtr;

		AggregateConfiguration(void);
		virtual ~AggregateConfiguration(void);

		void useServerCapabilitiesDefaults(const OpcUaBoolean& useServerCapabilitiesDefaults);
		OpcUaBoolean useServerCapabilitiesDefaults(void);
		void  treatUncertainAsBad(const OpcUaBoolean& treatUncertainAsBad);
		OpcUaBoolean treatUncertainAsBad(void); 
		void percentDataBad(const OpcUaByte& percentDataBad);
		OpcUaByte percentDataBad(void);
		void percentDataGood(const OpcUaByte& percentDataGood);
		OpcUaByte percentDataGood(void);
		void steppedSlopedExtrapolation(const OpcUaBoolean& steppedSlopedExtrapolation);
		OpcUaByte steppedSlopedExtrapolation(void);

		void opcUaBinaryEncode(std::ostream& os) const;
		void opcUaBinaryDecode(std::istream& is);

	  private:
		OpcUaBoolean useServerCapabilitiesDefaults_;
		OpcUaBoolean treatUncertainAsBad_;
		OpcUaByte percentDataBad_;
		OpcUaByte percentDataGood_;
		OpcUaBoolean steppedSlopedExtrapolation_;
	};

}

#endif
